let str = '()[]{}'

const pairs = new Map([
    [')', '('],
    [']', '['],
    ['}', '{']
]);
let stk = []

function isValid(s) {
	if(s.length % 2 == 1){
		return false
	} else {
		for(let k of s) {  // for...of...迭代字符串的每个字符值; for...in...迭代字符串的位置下标。
			if(pairs.has(k)) {
				if(stk.length == 0 || stk[stk.length - 1] != pairs.get(k)) {
					return false
				} else {
					stk.pop()
				}
			} else {
				stk.push(k)
			}
		}

		return stk.length == 0
	}
}

console.log(isValid(str))